#pragma once

#include <iostream>
#include <string>
#include "util.hpp"

namespace ns_log
{
    using namespace ns_util;
    // 日志等级
    enum
    {
        INFO,
        DEBUG,
        WARNING,
        ERROR,
        FATAL
    };

    // LOG() << "messages"
    inline std::ostream &Log(const std::string &level, const std::string &file_name, int line)
    {
        // 添加日志等级
        std::string messages = "[";
        messages += level;
        messages += "]";

        // 添加报错文件名称
        messages += "[";
        messages += file_name;
        messages += "]";

        // 添加报错行
        messages += "[";
        messages += std::to_string(line);
        messages += "]";

        // 日志时间戳
        messages += "[";
        messages += TimeUtil::GetTimeStap();
        messages += "]";

        // cout 内部提供用户级缓冲区
        std::cout << messages;
        return std::cout;
    }

// 开放式日志
//  LOG(INFO) << "messages" << "\n"
#define LOG(level) Log(#level, __FILE__, __LINE__)
}